/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ejb;

import java.util.LinkedList;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

/**
 *
 * @author allam
 */
@Stateless
public class PiattaformaFacade extends AbstractFacade<Piattaforma> implements PiattaformaFacadeLocal {

    // Add business logic below. (Right-click in editor and choose
    // "Insert Code > Add Business Method")
    @PersistenceContext(unitName = "EnterpriseApplication12-13-ejbPU")
    private EntityManager em;

    @Override
    protected EntityManager getEntityManager() {
        return em;
    }

    public PiattaformaFacade() {
        super(Piattaforma.class);
    }
    /**
     * Cerca l'oggetto sul Database
     * @param p piattaforma da cercare
     * @return true se piattaforma e' presente sul Database, false altrimenti
     */
     public boolean PiattaformaEsistente(Piattaforma p){
        return !(em.createQuery("select object(o) from Piattaforma as o where UPPER(o.nome) ='" + p.getNome().toUpperCase() + "'").getResultList().isEmpty());
    }
     /**
     * Effettua la cerca di una piattaforma
     * @param nome String che rappresenta il nome della piattaforma
     * @return Piattaforma se viene trovata, null altrimenti
     */
    public Piattaforma esiste(String nome){
        String strSQL ="select object(o) from Piattaforma as o where UPPER(o.nome) ='" + nome.toUpperCase() + "'";   

        List l = em.createQuery(strSQL).getResultList();

        if (l.isEmpty())
            return null;
        else{
            return (Piattaforma)l.get(0);
        }
       
          
    }
    /**
     * Ricerca le piattaforme i cui nomi matcha con uno della lista del parametro nomi nel Database
     *
     * @param nomi lista delle stringhe di ricerca
     * @return List<Piattaforma> lista delle piattaforme che soddisfano la ricerca, altrimenti restituisce una lista vuota 
     */
        public List<Piattaforma> estraiId(List<String> nomi){
            List<Piattaforma> ls=new LinkedList<Piattaforma>();
        for(String nome:nomi){
            String strSQL ="select object(o) from Piattaforma as o where UPPER(o.nome) ='" + nome.toUpperCase() + "'";   

            List l = em.createQuery(strSQL).getResultList();
            if (!l.isEmpty())ls.add((Piattaforma)l.get(0));
        }
        if (ls.isEmpty())
            return null;
        else{
            return ls;
        }
       
          
    }
        
        @Override
        public List<Piattaforma> findAll(){
            return em.createQuery("select object(p) from Piattaforma as p ORDER BY p.nome",Piattaforma.class).getResultList();
        }

}
